<template>
    <div class="dropdown" ref="dropdownRef">
        <a href="#" class="btn btn-outline-light my-2 dropdown-toggle" @click.prevent="changeOpen">{{ title }}</a>
        <ul class="dropdown-menu" :style="{ display: 'block' }" v-if="isOpen">
            <slot></slot>
        </ul>
    </div>
</template>

<script lang="ts">
import { defineComponent, ref, onMounted, onUnmounted, watch } from 'vue';
import useClickOutside from '../hooks/useClickOutside'
export default defineComponent({
    name: 'Dropdown',
    props: {
        title: {
            type: String,
            required: true
        }
    },
    setup() {
        const isOpen = ref(false)
        const dropdownRef = ref<null | HTMLElement>(null)
        const isClickOutside = useClickOutside(dropdownRef)
        watch(isClickOutside, () => {
            if (isOpen.value && isClickOutside.value) {
                isOpen.value = false
            }

        })
        const changeOpen = () => {
            isOpen.value = !isOpen.value
        }


        return {
            isOpen,
            changeOpen,
            dropdownRef
        }

    }
})
</script>